package org.exes;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClienteSocket {
    /**
     * Metodo de inicio
     * @param args parametros enviados por el sistema operativo
     * @throws java.net.UnknownHostException Cuando no se reconoce el host al que nos conectamos
     * @throws java.io.IOException Por errores de E/S
     */
     public static void main(String[] args) throws UnknownHostException, IOException {
        
         Socket soc = new Socket("www.marca.com",80);
         OutputStream os = soc.getOutputStream();
         InputStream is = soc.getInputStream();

         final String PETICION = "GET / HTTP/1.1\r\n"+
                                 "Host: www.marca.com\r\n"+
                                 "\r\n";
         
         os.write(PETICION.getBytes());
         
         os.flush();
         
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String respuesta = br.readLine();
        System.out.println(respuesta);
        
        int tamaño = 0;
        String encabezado ;
        while(!(encabezado=br.readLine()).equals("")){
            System.out.println(encabezado);
            if(encabezado.contains("Content-Length")){
                String []fragmentos = encabezado.split(" ");
                tamaño = Integer.parseInt(fragmentos[1]);
            }            
        }
        System.out.println("Tamaño  documento: "+tamaño);
        
        OutputStream fos = new FileOutputStream("c:\\pagina.html");
        byte buffer [] = new byte[2*1024];
        int leido = 0;
        while(tamaño>0){
            leido = is.read(buffer);
            if(leido>0){
//                tamaño-=leido; 
                tamaño = tamaño - leido;
                fos.write(buffer,0,leido);
            }
        }
        fos.flush();
        fos.close();
        
        
         
         
         
         
         
         
         
         soc.close();
        
     }

}
